home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Nordlicht Spiele / Nordlicht Spiele 05-04 (19xx)(Nordlicht)(DE)(PD).zip / Nordlicht Spiele 05-04 (19xx)(Nordlicht)(DE)(PD).adf / CrazyEights < prev    next >
Text File  |  1990-01-06  |  8KB  |  378 lines

  1. REM    Eights       a card game
  2. '      ------        14-Jan-85
  3.  
  4. WINDOW 3,"",(357,11)-(630,79),8
  5. WINDOW 2,"",(357,80)-(630,185),8
  6. WINDOW 1,"Eights",(1,1)-(336,185),15
  7.  
  8. DEFINT a-z
  9. DIM c(52)
  10. DIM a$(26),s$(32)
  11. WINDOW OUTPUT 1
  12. CLS:PRINT :PRINT "       *** EIGHTS ***"
  13. PRINT :PRINT " You must 'follow' suit, or change suit
  14. PRINT " with a same number card. Eights allow you
  15. PRINT " to 'call' your suit. If a '7' is played
  16. PRINT " you 'must' play a 7 or draw 3 cards
  17. PRINT " for each 7 played before you. Playing
  18. PRINT " an Ace causes next hand to be skipped. If
  19. PRINT " you don't have a play, press 'd' for draw.
  20. PRINT :PRINT " Scoring >>> Cards left in your hand
  21. PRINT " count against you as follows ....
  22. PRINT 
  23. PRINT "     7 ...  10 points
  24. PRINT "     8 ...   5 points
  25. PRINT "     A ...   3 points
  26. PRINT "    others  1 point.
  27. PRINT :PRINT "      Good Luck !"
  28. PRINT :PRINT "  Press any key to continue ":con$=INPUT$(1)
  29.  
  30. FOR p1=1 TO 8 : v(p1)=0 : NEXT p1
  31.  
  32. Main:
  33.  CLS : PRINT :PRINT :PRINT " How many players (2 to 4) ?";:k$=INPUT$(1)
  34.  k=VAL(k$) : IF k<2 OR k>4 THEN GOTO Main
  35.  n=k
  36.  
  37. 350 :
  38.  RANDOMIZE TIMER
  39.  a=0 : f7=0 : hndno=hndno+1
  40.  CLS : r=52 : PRINT :PRINT : PRINT TAB(3)"Shuffling"
  41.  
  42.  d$="shcd"
  43.  a$=" a 2 3 4 5 6 7 8 910 j q k"
  44.  s$="spades  hearts  clubs   diamonds"
  45.  d=1
  46.  
  47.  FOR i=1 TO 52 : c(i)=0 : NEXT i
  48.   FOR p1=1 TO 8 : p(p1)=6 : NEXT p1
  49.  
  50.    COLOR 2,3 : CLS
  51.  
  52.   FOR l0=1 TO n
  53.    FOR l1=1 TO 6
  54.     GOSUB deal
  55.    c((y-1)*4+x)=l0
  56.    NEXT l1 : NEXT l0
  57.    GOSUB showhand : GOSUB deal
  58.    IF y=1 THEN a=1
  59.    IF y=7 THEN f7=1
  60.    PRINT "Start ---> ";
  61.    spk$="start ." : GOSUB speak
  62.    GOSUB 2050
  63.    spk$=MID$(a$,y*2-1,2)+" of "+MID$(s$,x*8-7,8):GOSUB speak
  64.  
  65. 610 :
  66.    s1=x 
  67.    s2=y
  68. 640 :
  69.  GOSUB showhand
  70.   d=d+1
  71.   q1=0 : q2=0
  72.   IF d > n THEN d=d-n
  73.   IF s2<> 1 OR a=0 THEN GOTO 730
  74.   PRINT "Hand #";d;":   skipped "
  75.   spk$="hand "+STR$(d)+" skipped.":GOSUB speak
  76.   a=0
  77.   GOTO 640
  78. 730 :
  79.   IF d=1 THEN GOTO 1270
  80.     x=1 
  81. 750 :
  82.     y=1
  83. 760 :
  84.   IF c((y-1)*4+x) <> d THEN GOTO 880
  85.   IF s2<>7 THEN GOTO 830
  86.   IF y=7 THEN GOTO 810
  87.   IF f7=0 THEN GOTO 830
  88.   GOTO 880
  89. 810 :
  90.   f7=f7+1
  91.   GOTO 960
  92. 830 :
  93.   IF x=s1 OR y=s2 THEN GOTO 930
  94.   IF y<> 8 THEN GOTO 880
  95.   q1=x : q2=y
  96. 880 :
  97.   y=y+1 : IF y<=13 THEN GOTO 760
  98.   x=x+1 : IF x<=4 THEN GOTO 750
  99.   x=q1 : y=q2
  100.   GOTO 970
  101. 930 :
  102.   IF y=7 THEN f7=1
  103. 960 :
  104.   q1=0 : q2=0
  105. 970 :
  106.   PRINT "Hand #";d;": ";
  107.   IF x<>0 THEN GOTO 1040
  108.   PRINT "   Draws ";
  109.   GOSUB draw
  110.   IF m>9 THEN GOTO 1020
  111.   PRINT  m;" "
  112.   spk$="hand "+STR$(d)+" draws "+STR$(m)+".":GOSUB speak
  113.   GOTO 640
  114. 1020 :
  115.   PRINT  m
  116.   GOTO 640
  117. 1040 :
  118.    spk$="hand "+STR$(d) : GOSUB speak
  119.   GOSUB 2050
  120.    spk$=MID$(a$,y*2-1,2)+" of "+MID$(s$,x*8-7,8):GOSUB speak
  121. 1050 :
  122.   c((y-1)*4+x)=-1
  123.   IF q1<>0 AND d<>1 THEN GOTO 1080
  124.   IF y<>8 OR d=1 THEN GOTO 1210
  125. 1080 :
  126.   FOR i=1 TO 5:s(i)=0:NEXT i
  127.   FOR x1=1 TO 4
  128.   FOR y1=1 TO 13
  129.   IF c((y1-1)*4+x1)=d THEN s(x1)=s(x1)+1
  130.   NEXT y1 : NEXT x1
  131.   FOR x1=1 TO 4
  132.   IF s(x1) <= s(5) THEN GOTO 1190
  133.   s(5)=s(x1)
  134.   x=x1
  135. 1190 :
  136.   NEXT x1
  137.   PRINT "     Call:   ";MID$(s$,x*8-7,8)
  138.    spk$="call " : GOSUB speak
  139.    spk$="      "+MID$(s$,x*8-7,8):GOSUB speak
  140. 1210 :
  141.   p(d)=p(d)-1
  142.   IF p(d)=0 THEN GOTO 2380
  143.   IF y<> 1 THEN GOTO 610
  144.   a=1
  145.   GOTO 610
  146.  REM input
  147. 1270 :
  148.   PRINT "Your play: ";
  149.   spk$="your play":GOSUB speak
  150. 1280 :
  151.   GOSUB getinp
  152.   IF k<> ASC("d") THEN GOTO 1360
  153.   PRINT TAB(12);"   Draws ";
  154.   GOSUB draw : PRINT  m;: IF m<10 THEN PRINT " ";:PRINT 
  155.   spk$="you draw "+STR$(m):GOSUB speak
  156.   GOTO 640
  157. 1360 :
  158.   IF k<> ASC("1") THEN GOTO 1400
  159.   PRINT  TAB(12);"";
  160.   GOTO 1280
  161. 1400 :
  162.   l0=0
  163. 1410 :
  164.   l0=l0+1
  165.   IF k=ASC(MID$(a$,l0*2,1)) THEN GOTO 1670
  166.   IF l0<13 THEN GOTO 1410
  167. 1435 :
  168.   PRINT TAB(12);"?  ";
  169.   GOTO 1280
  170. 1670 :
  171.   y=l0 
  172.   PRINT TAB(12);MID$(a$,y*2-1,2);" ";
  173.   GOSUB getinp
  174.   l0=0
  175. 1690 :
  176.   l0=l0+1
  177.   IF k= ASC(MID$(d$,l0,1)) THEN GOTO 1730
  178.   IF l0<4 THEN GOTO 1690
  179.   GOTO 1435
  180. 1730 :
  181.   x=l0
  182.   PRINT  MID$(s$,x*8-7,8)
  183.    spk$=MID$(a$,y*2-1,2)+" of "+MID$(s$,x*8-7,8) :GOSUB speak
  184.   IF c((y-1)*4+x)=1 THEN GOTO 1790
  185.   PRINT "> Play your own cards!" 
  186.    spk$="that card is not in your hand." : GOSUB speak
  187.   GOTO 1270
  188. 1790 :
  189.   IF x=s1 OR y=s2 THEN GOTO 1840
  190.   IF y=8 THEN GOTO 1840
  191.   PRINT "> Follow suit or rank!" 
  192.    spk$="follow sute or number" : GOSUB speak
  193.   GOTO 1270
  194. 1840 :
  195.   IF s2=7 THEN GOTO 1980
  196.   IF y=7 THEN GOTO 1990
  197. 1880 :
  198.   IF y<>8 THEN GOTO 1050
  199.   c((y-1)*4+x)=-1
  200.   PRINT "     Call:   ";
  201.   spk$="call ": GOSUB speak
  202. 1910 :
  203.   GOSUB getinp
  204.   l0=0
  205. 1920 :
  206.   l0=l0+1
  207.   IF k=ASC(MID$(d$,l0,1)) THEN GOTO 1960
  208.   IF l0<4 THEN GOTO 1920
  209.   GOTO 1910
  210. 1960 :
  211.   x=l0
  212.   PRINT  MID$(s$,x*8-7,8)
  213.  
  214.    spk$="      "+ MID$(s$,x*8-7,8) : GOSUB speak
  215. GOTO 1210
  216. 1980 :
  217.   IF y<>7 THEN 2010
  218. 1990 :
  219.   f7=f7+1
  220.   GOTO 1050
  221. 2010 :
  222.   IF f7=0 THEN GOTO 1880
  223.   PRINT "> Play a '7' or Draw!!" 
  224.    spk$="PLay aey 7 or draw." : GOSUB speak
  225.   GOTO 1270
  226. 2050 :
  227.         REM print
  228.  
  229.   PRINT MID$(a$,y*2-1,2);" ";MID$(s$,x*8-7,8)
  230.  
  231.   RETURN
  232.  
  233. draw:
  234.   m=f7*3 : IF m<1 THEN m=1
  235.   m1=m
  236.   FOR t=1 TO m1
  237.   GOSUB deal
  238.   IF m<> m1 THEN GOTO 2160
  239.   c((y-1)*4+x)=d
  240. 2160 :
  241.   NEXT t
  242.   p(d)=p(d)+m
  243.   f7=0 : RETURN
  244.  
  245. deal:
  246.   IF r<>0 THEN GOTO 2320
  247.   PRINT "";
  248.   FOR x1=1 TO 52
  249.   IF c(x1)<>-1 THEN GOTO 2280
  250.   c(x1)=0
  251.   r=r+1
  252. 2280 :
  253.   NEXT x1
  254.   c((s2-1)*4+s1)=-1
  255.   r=r-1
  256.   IF r>0 THEN GOTO 2320
  257.   m=m-1
  258.    RETURN
  259.  
  260. 2320 :
  261.   x= INT(RND*4+1)
  262.   z= INT(RND*4)
  263.   y= INT(RND*13+1)
  264.   IF c((y-1)*4+x)<>0 THEN GOTO 2320
  265.   c((y-1)*4+x)=-1
  266.   r=r-1
  267.    RETURN
  268.  
  269. 2380 : PRINT " * A Winner * ":spk$="aey winner":GOSUB speak: FOR de=1 TO 5000 : NEXT de
  270.   CLS : PRINT : PRINT "**** Hand ";d;" Wins! ****" : GOSUB showhand : FOR i=1 TO 1000 :NEXT i
  271.   FOR z= 1 TO n
  272.    r=0
  273.   IF z=1 THEN GOTO 2450
  274.   PRINT  : PRINT "Hand #";z;": ";
  275.   GOTO 2460
  276. 2450 :
  277.   PRINT "Your Hand: ";
  278. 2460 :
  279.   FOR x=1 TO 4
  280.   FOR y=1 TO 13
  281.   IF c((y-1)*4+x) <> z THEN GOTO 2570
  282.   GOSUB 2050 : r=r+1
  283.   PRINT "           ";
  284.   IF y=1 THEN r=r+2
  285.   IF y=7 THEN r=r+9
  286.   IF y=8 THEN r=r+4
  287. 2570 :
  288.   NEXT y : NEXT x
  289.  
  290.   PRINT "-----------" : PRINT "          ";
  291.   IF r<>1 THEN GOTO 2595
  292.   PRINT "  1 point   "
  293.   GOTO 2605
  294. 2595 :
  295.   IF r<10 THEN PRINT " ";
  296.   PRINT  r;" Points  "
  297. 2605 :
  298.   v(z)=v(z)+r
  299.   NEXT z
  300.  
  301.  
  302.   IF hndno>9 THEN GOTO 2680
  303.   IF hndno=1 THEN GOTO 2681
  304.   PRINT :PRINT "After  ";hndno;" hands" : GOTO 2689
  305. 2680 :
  306.   PRINT :PRINT "After ";hndno;" hands" : GOTO 2689
  307. 2681 :
  308.   PRINT :PRINT "After  ";hndno;"  hand"
  309. 2689 :
  310.   PRINT "----------------"
  311.   FOR z=1 TO n
  312.  
  313.   IF z>1 THEN GOTO 2740
  314.   PRINT "Your hand: ";
  315.   GOTO 2745
  316. 2740 :
  317.   PRINT "Hand #";z;": ";
  318. 2745 :
  319.   IF v(z)<100 THEN PRINT " ";
  320.   IF v(z)<10 THEN PRINT " ";
  321.   PRINT v(z)
  322.   NEXT z
  323.   PRINT "              "
  324.  
  325.   PRINT "Another Hand ? ";
  326.   GOSUB getinp
  327.   IF k<> ASC("n") THEN WINDOW OUTPUT 2 :COLOR 1,0:CLS:WINDOW OUTPUT 1:COLOR 2,3: GOTO 350
  328.  
  329. COLOR 1,0: WINDOW CLOSE 2:WINDOW CLOSE 3: WINDOW 1,"Basic",,31: END
  330.  
  331. showhand:
  332.  
  333.   WINDOW OUTPUT 3 : COLOR 1,2
  334.   LOCATE 1,1
  335.   PRINT "Hand:    #Cards" : PRINT "---------------"
  336.   FOR x=1 TO n 
  337.    IF x=1 THEN
  338.     PRINT " You     : ";
  339.    ELSE
  340.     PRINT "Hand ";x;" : ";
  341.    END IF
  342.      IF p(x)<10 THEN PRINT " ";
  343.    PRINT p(x): NEXT x :PRINT 
  344.   WINDOW OUTPUT 1
  345.   IF d<>1 THEN GOTO 4080
  346.   WINDOW OUTPUT 2
  347.   LOCATE 1,1 : PRINT " Your Hand " : PRINT "-----------"
  348.   FOR x=1 TO 4 : FOR y=1 TO 13: IF c((y-1)*4+x)=1 THEN GOSUB 2050 
  349.    NEXT y : NEXT x : PRINT "               "
  350. 4080 :
  351.   WINDOW OUTPUT 1 : RETURN
  352.  
  353.  
  354. getinp:
  355.   k$=INPUT$(1) : k=ASC(k$)
  356.    RETURN
  357.  
  358. speak:
  359.  
  360.   IF MID$(spk$,7,1)="h" THEN MID$(spk$,7)="harts   "
  361.   IF MID$(spk$,7,1)="d" THEN MID$(spk$,7)="di-monds"
  362.   temp$=spk$
  363.   IF MID$(spk$,1,1)=" " AND  MID$(spk$,2,1)="a" THEN spk$="ace of "+RIGHT$(temp$,8)
  364.   IF MID$(spk$,2,1)="j" THEN spk$="jack of "+ RIGHT$(temp$,8)
  365.   IF MID$(spk$,2,1)="k" THEN spk$="king of "+ RIGHT$(temp$,8)
  366.   IF MID$(spk$,2,1)="q" THEN spk$="queen of "+ RIGHT$(temp$,8)
  367.   IF LEFT$(spk$,1)="1" THEN spk$="ten of "+RIGHT$(temp$,8)
  368.  
  369.   SAY TRANSLATE$(spk$)
  370.   RETURN
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.